【Hexo博客系列】No.2 使用安知鱼主题打造可维护的个人博客
【Hexo博客系列】No.2 使用安知鱼主题打造可维护的个人博客
zhangchangsheng上一篇完成了 Hexo 博客的初始化和部署。接下来要解决的是另一个更长期的问题:怎样让博客既有自己喜欢的样子,又不会在主题升级后把手动修改全部丢掉。
本文以 安知鱼主题 为例,整理一套从安装、配置到功能验收的流程。重点不在于把配置项填满,而在于把站点配置、主题配置和文章内容分开管理。这样后续更换头像、导航、配色或升级主题时,维护成本会低很多。
准备工作
执行以下操作前,确保项目根目录已经可以正常运行 hexo server,并且 Git 与 Node.js 已安装完成。主题通常依赖 Pug 和 Stylus 渲染器;如果项目中尚未安装,可以先执行:
npm install hexo-renderer-pug hexo-renderer-stylus --save |
先用 Git 保存一次当前状态也很有必要:
git add . |
这不是主题安装的硬性要求,但当配置错误或不喜欢最终效果时,可以明确知道从哪里恢复。
安装并启用主题
在 Hexo 根目录执行下面的命令,把主题克隆到 themes/anzhiyu:
git clone -b main https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git themes/anzhiyu |
然后打开站点根目录的 _config.yml,找到 theme 并改为:
theme: anzhiyu |
此时不要急着修改主题目录内的配置。先生成并启动站点,确认基础依赖和主题名称没有问题:
hexo clean |
浏览器访问终端显示的本地地址。页面能够打开但样式异常时,优先检查 Pug、Stylus 是否安装,以及 theme 的值和主题目录名称是否完全一致。
用覆盖配置保存个性化设置
安知鱼支持把主题自定义配置放在站点根目录。建议复制主题的默认配置文件为:
_config.anzhiyu.yml |
Windows 可以在资源管理器中复制 themes/anzhiyu/_config.yml 后重命名;PowerShell、Git Bash 或 Linux 环境也可以使用各自的复制命令。
覆盖配置的意义很直接:主题源码负责更新,站点根目录的配置负责你的内容。后续自定义导航、头像、社交链接、首页布局或搜索时,都修改 _config.anzhiyu.yml,不要直接改 themes/anzhiyu/_config.yml。
需要注意两个规则:
- 覆盖文件中出现的键会优先于主题默认配置生效;同一个功能不要在两个文件里反复修改。
- 主题更新后要阅读更新说明,对比新增或变更的配置项,再有选择地合并到覆盖文件中。
如果怀疑覆盖文件没有生效,可以使用调试模式构建:
hexo generate --debug |
再从输出中确认 Hexo 读取的主题与配置文件路径。
先完成站点的基础信息
主题安装成功后,优先补齐对访问者最重要的内容:站点标题、副标题、描述、头像和导航。站点名称、语言、网址等公共信息一般放在根目录 _config.yml;主题样式、菜单和组件开关则放在 _config.anzhiyu.yml。
配置时建议每次只改一个区域,随后运行一次 hexo server 查看结果。一次性粘贴大量配置很难定位缩进、字段拼写和 URL 写错的位置。YAML 对缩进敏感,统一使用空格,列表项与父级配置保持正确层级。
创建标签页与分类页
标签和分类不是普通文章,需要额外创建页面并设置页面类型。先创建标签页:
hexo new page tags |
编辑 source/tags/index.md,保留类似下面的 Front Matter:
|
再创建分类页:
hexo new page categories |
编辑 source/categories/index.md:
|
最后在主题菜单配置中把 /tags/ 和 /categories/ 加入导航。文章的 tags 和 categories 字段有内容后,Hexo 会在构建时自动汇总这些页面。
设计一份稳定的文章模板
scaffolds/post.md 决定了执行 hexo new 时生成的文章骨架。一份常用且足够精简的模板如下:
|
字段不必越多越好。description 用于搜索摘要和分享卡片;cover 适合列表页缩略图;top_img 控制文章头图;toc 控制目录。团队或个人长期写作时,让模板保留真正会使用的字段,反而更容易保持文章元数据一致。
创建文章的命令仍然很简单:
hexo new "文章标题" |
文章文件会出现在 source/_posts 中。建议创建后先填写标题、分类、标签与描述,再开始正文,后续整理和检索会轻松很多。
启用本地搜索
本地搜索适合文章数量逐渐增多、又不希望依赖第三方搜索服务的站点。先安装生成搜索索引的插件:
npm install hexo-generator-search --save |
接着在 _config.anzhiyu.yml 中确认本地搜索配置已启用:
local_search: |
preload: false 表示用户打开搜索面板后才加载索引,首屏负担更小;文章量不大且更重视搜索响应时,可以改为 true。构建完成后,检查生成目录中是否存在搜索索引文件,并在浏览器里实际搜索一篇文章标题与正文关键词。
文章置顶与静态文件
需要置顶文章时,先安装相应插件:
npm install hexo-generator-topindex --save |
然后在文章 Front Matter 中添加数值型 top:
top: 10 |
多个置顶文章的排序规则应以当前插件与主题版本的说明为准,设置后务必在首页验证真实顺序。
此外,放在 source 目录下且不被 Hexo 渲染的文件会被原样复制到最终站点。例如站长验证用的 ads.txt、robots.txt 或自定义下载文件,都可以直接放进 source,构建后会出现在站点根目录。
发布前检查清单
发布前执行一次完整构建:
hexo clean && hexo generate |
建议至少检查以下内容:
- 首页、文章页、标签页和分类页能正常访问。
- 导航链接没有跳到本地地址或 404 页面。
- 移动端的菜单、代码块和图片没有溢出。
- 搜索可以命中最近新增的文章。
- 新主题配置没有直接写入
themes/anzhiyu,便于未来更新。
确认无误后,再按自己的部署方式执行 hexo deploy 或提交到触发持续部署的 Git 仓库。
小结
主题美化的价值不只是视觉变化。把主题配置隔离在覆盖文件中、用模板约束文章元数据、为标签分类和搜索建立稳定入口,博客才会从一次性的展示页变成可以持续维护的内容站点。

